- Pascal-FC for IBM PC compatibles - 
- Compiler Version P5.2

G L Davies  &  A Burns, University of Bradford

Compiler listing

    1     0 program badinc;
    2     0 var
    3     0     proceed : boolean;
    4     0     p1count,p2count,total : integer;
    5     0 
    6     0 process proc1;
    7     0 begin
    8     0     repeat
    9     0         p1count := p1count + 1;
   10     5         total := total + 1;
   11    10     until (p1count > 100);
   12    14 end;    (* proc1 *)
   13    15 
   14    15 process proc2;
   15    15 begin
   16    15     repeat
   17    15         p2count := p2count + 1;
   18    20         total := total + 1;
   19    25     until (p2count > 100);
   20    29 end;    (* proc2 *)
   21    30 
   22    30 begin   (* MAIN *)
   23    30 
   24    30     proceed := true;
   25    33     p1count := 0;
   26    36     p2count := 0;
   27    39     total := 0;
   28    42     cobegin
   29    43         proc1; proc2;
   30    51     coend;
   31    52     writeln('p1count = ',p1count,'    p2count = ',p2count);
   32    61     writeln('total = ',total)
   33    65 end.



Symbol table

    name       link      object       type         ref      nrm  lev  adr  aux

 45 _main        44     procedure   notyp           2     TRUE     0   30    0
 46 any           0     variable    synch           0     TRUE     1    5    0
 47 proceed      46     variable    boolean         0     TRUE     1    5    0
 48 p1count      47     variable    integer         0     TRUE     1    6    0
 49 p2count      48     variable    integer         0     TRUE     1    7    0
 50 total        49     variable    integer         0     TRUE     1    8    0
 51 proc1        50     variable    process         3     TRUE     1    9    0
 52 $            51     type id     process         3     TRUE     1    0    0
 53 proc2        52     variable    process         4     TRUE     1   10    0
 54 $            53     type id     process         4     TRUE     1   15    0

Generated P-code

    0     ldadr        1         6          ;8
    1     ldval.i      1         6          ;9
    2     ldcon.i      0         1          ;9
    3     addop.i      0         0          ;9
    4     store.i      0         0          ;9
    5     ldadr        1         8          ;9
    6     ldval.i      1         8          ;10
    7     ldcon.i      0         1          ;10
    8     addop.i      0         0          ;10
    9     store.i      0         0          ;10
   10     ldval.i      1         6          ;11
   11     ldcon.i      0       100          ;11
   12     relgt.i      0         0          ;11
   13     jmpiz        0         0          ;11
   14     rproc        1         0          ;11
   15     ldadr        1         7          ;16
   16     ldval.i      1         7          ;17
   17     ldcon.i      0         1          ;17
   18     addop.i      0         0          ;17
   19     store.i      0         0          ;17
   20     ldadr        1         8          ;17
   21     ldval.i      1         8          ;18
   22     ldcon.i      0         1          ;18
   23     addop.i      0         0          ;18
   24     store.i      0         0          ;18
   25     ldval.i      1         7          ;19
   26     ldcon.i      0       100          ;19
   27     relgt.i      0         0          ;19
   28     jmpiz        0        15          ;19
   29     rproc        1         0          ;19
   30     ldadr        1         5          ;22
   31     ldcon.b      0         1          ;24
   32     store.b      0         0          ;24
   33     ldadr        1         6          ;24
   34     ldcon.i      0         0          ;25
   35     store.i      0         0          ;25
   36     ldadr        1         7          ;25
   37     ldcon.i      0         0          ;26
   38     store.i      0         0          ;26
   39     ldadr        1         8          ;26
   40     ldcon.i      0         0          ;27
   41     store.i      0         0          ;27
   42     cobeg        0         0          ;27
   43     mkstk        1        52          ;28
   44     ldadr        1         9          ;28
   45     procv        0         0          ;28
   46     calls        1         4          ;28
   47     mkstk        1        54          ;29
   48     ldadr        1        10          ;29
   49     procv        0         0          ;29
   50     calls        1         4          ;29
   51     coend        0         0          ;29
   52     ldcon.i      0        10          ;31
   53     wrstr        0         0          ;31
   54     ldval.i      1         6          ;31
   55     wrval.i      0         0          ;31
   56     ldcon.i      0        14          ;31
   57     wrstr        0        10          ;31
   58     ldval.i      1         7          ;31
   59     wrval.i      0         0          ;31
   60     wrlin        0         0          ;31
   61     ldcon.i      0         8          ;32
   62     wrstr        0        24          ;32
   63     ldval.i      1         8          ;32
   64     wrval.i      0         0          ;32
   65     wrlin        0         0          ;32
   66     stopx        0         0          ;32
